package com.sunyard.dal.mapper;

import com.sunyard.dal.bo.device.key.KeyQueryBO;
import com.sunyard.dal.entity.Key;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface KeyMapper {
    /**
     * delete by primary key
     *
     * @param id primaryKey
     * @return deleteCount
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * insert record to table
     *
     * @param record the record
     * @return insert count
     */
    int insert(Key record);

    /**
     * insert record to table selective
     *
     * @param record the record
     * @return insert count
     */
    int insertSelective(Key record);

    /**
     * select by primary key
     *
     * @param id primary key
     * @return object by primary key
     */
    Key selectByPrimaryKey(Integer id);

    /**
     * update record selective
     *
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKeySelective(Key record);

    /**
     * update record
     *
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(Key record);

    /**
     * 分页查询终端信息
     *
     * @param queryBO [queryBO]
     * @return List<Key>
     **/
    List<Key> getKeyByPage(KeyQueryBO queryBO);

    /**
     * 通过终端名称查询终端信息
     *
     * @param keyName [keyName]
     * @return Key
     **/
    Key getKeyByKeyName(String keyName);

    /**
     * 通过ID和名称查询是否存在ID之外的信息（修改判断）
     *
     * @param keyName keyName
     * @param id      [keyName, id]
     **/
    Key selectByNameAndId(@Param("keyName") String keyName, @Param("keyId") String keyId);

    /**
     * 通过ID和Mac查询是否存在ID之外的信息（修改判断）
     *
     * @param mac 终端Mac地址
     * @param id  [mac, id]
     * @return Key
     **/
    Key selectByMacAndId(@Param("mac") String mac, @Param("keyId") String keyId);

    /**
     * 查询Mac对应的终端信息
     *
     * @param mac [mac]
     * @return Key
     **/
    Key getKeyByMac(String mac);

    /**
     * 获取所有终端信息
     *
     * @return List<Key>
     * @author: guangw.dang
     * @Date: 2022/7/1 16:47
     **/
    List<Key> getKeyList();
}